python爬虫之使用requests进行图片爬取 您所在的位置:网站首页 承接流量 英文翻译是什么 python爬虫之使用requests进行图片爬取

python爬虫之使用requests进行图片爬取

2024-06-09 16:22| 来源: 网络整理| 查看: 265

前期回顾,关于python基础知识以及爬虫基础我们可以看 ——> python学习手册,网络安全的小伙伴千万不要错过。

图片爬取思路

学会这一技能需要我们会python基础,xpath解析,其用来解析出网页中图片所在的地址。解析出来地址就需要我们保存图片了。那如何将一张张图片保存下来了?我们可以使用requests的响应对象属性content来获取图片的二进制数据。接着就使用with open()函数进行保存就行了,这样一张图片就获取到了。是不是很简单了!

获取网页源代码解析出图片地址获取图片二进制数据 requests.get(xx).content生成图片名称设置图片的保存地址=文件地址+图片名称保存图片 with open(图片保存地址,'wb') as f: 思路分析

网站地址为:4K美女壁纸_高清4K美女图片_彼岸图网

1. xpath提取图片地址

 如下查看元素我们发现,所有的图片地址都是包含在一个个的li标签中,li标签中又有a标签和img标签,而图片地址就为img标签中的src的属性值,所以我们提取出属性值就能将图片地址获取。

但是这样只是获取到的略缩图的地址,我们点击图片进行后发现存在比原来图片像素更高的图片。所以我们这里就获取更加高清的美女图片。

所以接下来就分析略缩图与其高清图之间的关系。我们发现略缩图中href的属性值就是请求高清图所在页面的地址。所以我们这里将href属性值获取然后向其发送请求就能获取到高清图所在源码,然后用xpath将高清图下载地址提取出来,就能够成功下载了。

 代码编写 import requests import os from lxml import etree headers={ 'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Mobile Safari/537.36' } #实现爬取前10页略缩图片地址,并存放在列表中 def lue(): list_lue = [] for i in range(1,11): if i > 1: url = f'https://pic.netbian.com/4kmeinv/index_{i}.html' else: url = 'https://pic.netbian.com/4kmeinv/index.html' response_text = requests.get(url,headers=headers,timeout=15).text #实例化etree对象 tree = etree.HTML(response_text) #提取出高清图所在页面地址 r = tree.xpath('//ul[@class="clearfix"]/li/a/@href') for i in r: list_lue.append(i) return list_lue #获取高清图下载地址及名称 def gao(b): if not os.path.exists('./高清美女'): os.mkdir('./高清美女') for i in b: url = "https://pic.netbian.com"+i #高清图所在页面地址 response = requests.get(url=url,headers=headers,timeout=15) response.encoding = 'gbk' #解决中文乱码 response_text = response.text response_text tree = etree.HTML(response_text) #最终高清图的下载地址 img_src = 'http://pic.netbian.com'+ tree.xpath('//div[@class="photo-pic"]/a/img/@src')[0] #图片名 img_name = tree.xpath('//div[@class="photo-pic"]/a/img/@title')[0] #获取图片二进制数据 img_content = requests.get(img_src,headers=headers,timeout=3).content img_path = './高清美女/'+img_name+'.jpg' with open(img_path,'wb') as f: f.write(img_content) print(img_name+'.jpg下载完毕') print("美女图片全部下载完毕!") def main(): b = lue() gao(b) if __name__ == '__main__': main()

 

 欢迎有志青年和我一起学习



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有